package pe.com.bbva.ge.vista.vaadin.ui.component;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import pe.com.bbva.ge.domain.configuracion.Valor;
import pe.com.bbva.ge.domain.solicitud.DetalleMoneda;
import pe.com.bbva.ge.domain.solicitud.Remito;
import pe.com.bbva.ge.domain.solicitud.Solicitud;
import pe.com.bbva.ge.negocio.SolicitudNegocio;

import com.cdainfo.vaadin.spring.Inject;
import com.vaadin.data.util.BeanItemContainer;

public class ComboBoxRemito extends ComboBoxGE {

	/**
	 * 
	 */
	private static final long serialVersionUID = -3521445669575665305L;
	
	private Solicitud solicitud;
	private Valor moneda;

	@Autowired
	private SolicitudNegocio gestionarSolicitudNegocio;
	
	private BeanItemContainer<Remito> containerRemito;
	
	public ComboBoxRemito(Solicitud solicitud, Valor moneda) {
		super();
		String nombre = "Remito";
		setInputPrompt(nombre);
		setDescription(nombre);
		Inject.inject(this);
		this.solicitud = solicitud;
		this.moneda = moneda;
	}
	
	@Override
	public void postConstruccion() {
		
		obtenerRemitos();
	}
	
	public void obtenerRemitos()
	{
		if(this.solicitud != null)
		{
			DetalleMoneda detalleMoneda = gestionarSolicitudNegocio.obtenerDetalleMonedaXIdMoneda(gestionarSolicitudNegocio.obtenerDestinos(this.solicitud).get(0), this.moneda);
			List<Remito> listaRemitos = gestionarSolicitudNegocio.obtenerRemitos(detalleMoneda);
			containerRemito = new BeanItemContainer<Remito>(Remito.class,  listaRemitos);
			
			setContainerDataSource(containerRemito);
			setItemCaptionPropertyId("numero");
		}
	}
	
	public Remito obtenerRemito()
	{
		Object objeto = getValue();
		if(objeto != null)
		{
			return (Remito) objeto;
		}
		return null;
	}
	
	public void setSolicitud(Solicitud solicitud) {
		this.solicitud = solicitud;
	}

	public void setMoneda(Valor moneda) {
		this.moneda = moneda;
	}
}
